#include <iostream>

using namespace std;

// 1 + 2 + ... + n
// 泛型递归法
template<int n>
struct Sum {
    enum Value {N = Sum<n-1>::N + n};  // Sum(n) = Sum(n-1) + n
};
template<>
struct Sum<1> {
    enum Value {N = 1};
};

int main(void) {
    // 计算在编译期间完成，得到的汇编代码直接就是计算结果
    // 最为高效
    cout << Sum<100>::N << endl;  // 直接给出结果，因为编译期间直接生成了代码
    return 0;
}
